#pragma once


#include <GdiPlus.h>
#include "UINameSpaceMacros.h"


class UIELEMENT_API IUIElement
{
public:
	virtual void Move(int x, int y, int cx, int cy) = 0;
	virtual void Hide() = 0;
	virtual void Show() = 0;
	virtual RECT GetRectangle() = 0;

	virtual bool RecalculateSize(SIZE szAvailable, SIZE* pszNewSize, int* pnWindowCount) = 0;
	virtual HDWP DeferWindowPosition(
		HDWP hWinPosInfo, int x, int y, int cx, int cy, UINT uFlags) = 0;

	virtual void SetParentUIElement(IUIElement* pParentUIElement) = 0;
	virtual void NotifyChildResized(IUIElement* pResizedChild, SIZE szNewSize) = 0;
};

class UIELEMENT_API IBufferedUI
{
public:
	virtual Gdiplus::Graphics* GetBuffer() = 0;
};




